package com.bjpowernode.javaweb.servlet;

import javax.servlet.*;
import java.io.IOException;


/**
 * 编写一个标准通用的Servlet,起名GenericServlet
 * 以后所有的Servlet类都不直接实现Servlet接口
 * 以后所有的Servlet类都不直接继承GenericServlet类
 * GenericServlet就是一个适配器
 */
public abstract class GenericServlet implements Servlet {
    ServletConfig config;

    /**
     * 有参的这个init方法加上final防止被子类重写
     * @param servletConfig
     * @throws ServletException
     */
    @Override
    public final void init(ServletConfig servletConfig) throws ServletException {
        this.config = servletConfig;
        this.init();
    }

    //如果子类必须在init初始化，那就调用无参的init进行初始化
    public void init(){

    }

    @Override
    public ServletConfig getServletConfig() {
        return this.config;
    }

    /**
     * 抽象类里的抽象方法，这个方法最常用，所以要求子类必须实现service这个方法
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public abstract void service(ServletRequest servletRequest, ServletResponse servletResponse)
            throws ServletException, IOException;

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}
